package com.yantong.utils;


import com.yantong.constant.StringConstans;

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * Created by apple on 2019/8/27.
 */
public class ValidateUtil {
    /**
     * 校验是否为空字符串
     *
     * @param validateStr
     *            待校验的字符串
     * @return boolean
     */
    public static boolean isEmptyString(String validateStr)
    {
        return null == validateStr || StringConstans.STR_EMPTY.equals(validateStr);
    }

    /**
     * 校验是否不为空字符串
     *
     * @param validateStr
     *            待校验的字符串
     * @return boolean
     */
    public static boolean isNotEmptyString(String validateStr)
    {
        return !isEmptyString(validateStr);
    }

    /**
     * 校验: 为空对象或者空字符串
     *
     * @param validateObj
     *            待校验的对象
     * @return boolean
     */
    public static boolean isEmptyObjectOrString(Object validateObj)
    {
        return null == validateObj || StringConstans.STR_EMPTY.equals(validateObj.toString().trim());
    }

    /**
     * 校验: 不为为空对象或者空字符串
     *
     * @param validateObj
     *            待校验的对象
     * @return boolean
     */
    public static boolean isNotEmptyObjectOrString(Object validateObj)
    {
        return !isEmptyObjectOrString(validateObj);
    }

    /**
     * 校验是否为空collection
     *
     * @param validateColl
     *            待校验的collection
     * @return boolean
     */
    public static boolean isEmptyCollection(Collection<?> validateColl)
    {
        return null == validateColl || validateColl.size() == 0;
    }

    /**
     * 校验是否不为空collection
     *
     * @param validateColl
     *            待校验的collection
     * @return boolean
     */
    public static boolean isNotEmptyCollection(Collection<?> validateColl)
    {
        return !isEmptyCollection(validateColl);
    }

    /**
     * 校验：为空Map
     *
     * @param validateMap
     *            待校验的Map
     * @return boolean
     */
    public static boolean isEmptyMap(Map<?, ?> validateMap)
    {
        return null == validateMap || 0 == validateMap.entrySet().size();
    }

    /**
     * 校验: 不为空Map
     *
     * @param validateMap
     *            待校验的Map
     * @return boolean
     */
    public static boolean isNotEmptyMap(Map<?, ?> validateMap)
    {
        return !isEmptyMap(validateMap);
    }

    /**
     * 判断任何对象的数组是否为空数组
     *
     * @param arrayObj
     *            　数组对象
     * @return　boolean
     */
    public static boolean isEmptyArray(Object arrayObj)
    {
        return null == arrayObj || Array.getLength(arrayObj) == 0;
    }

    /**
     * 判断任何对象的数组是否不为空数组
     *
     * @param arrayObj
     *            　数组对象
     * @return　boolean
     */
    public static boolean isNotEmptyArray(Object arrayObj)
    {
        return !isEmptyArray(arrayObj);
    }

    /**
     * 验证是不是合法的手机号
     * @param phone 验证的手机号
     */
    public static boolean validatePhone(String phone){

        String regex = "^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$";

        if(!isEmptyString(phone)){

            return Pattern.compile(regex).matcher(phone).matches();

        }else{

            return false;

        }

    }

}
